const tokenUtils = require('../utils/token')

module.exports = () => {
  return async function auth(ctx, next) {
    const token = ctx.get('Authorization');

    if (!token) {
      ctx.body = {
        code: 401,
        message: '未提供 Token',
      };
      return;
    }

    try {
      const decoded = tokenUtils.verifyToken(token.replace('Bearer ', ''), ctx.app.config.jwtSecret);
      ctx.user = decoded; // 将用户信息附加到 ctx 上，后续可以在控制器中使用
      // console.log(ctx.user)
      await next();
    } catch (err) {
      console.log(err)
      ctx.body = {
        code: 401,
        message: '无效的 Token',
      };
    }
  };
};
